import http from "@/utils/http";

export type BannerItem = {
  hrefUrl: string;
  id: string;
  imgUrl: string;
  type: string;
};

type HomeBannerData = {
  distributionSite: number;
};

/**
 * 获取首页广告位列表数据
 * @param data.distributionSite 区分首页还是其他页的广告位
 * @returns promise
 */
export function getHomeBanner(data: HomeBannerData) {
  return http<BannerItem[]>({
    url: "/home/banner",
    method: "GET",
    data,
  });
}

/**
 * 首页类目接口返回数据的类型
 */
export interface CategoryItem {
  /**
   * 展示图标
   */
  icon: string;
  /**
   * id
   */
  id: string;
  /**
   * 分类名称
   */
  name: string;
}

/**
 * 获取首页类目列表数据
 * @returns promise
 */
export const getHomeCategory = () => {
  return http<CategoryItem[]>({
    url: "/home/category/mutli",
    method: "GET",
  });
};

/**
 * 热门推荐接口返回的数据类型
 */
export interface HotItem {
  /**
   * 推荐说明
   */
  alt: string;
  /**
   * id
   */
  id: string;
  /**
   * 图片集合
   */
  pictures: string[];
  /**
   * 跳转地址
   */
  target: string;
  /**
   * 推荐标题
   */
  title: string;
  /**
   * 推荐类型
   */
  type: string;
}

/**
 * 获取首页推荐的列表数据
 * @returns promise
 */
export const getHomeHot = () => {
  return http<HotItem[]>({
    url: "/home/hot/mutli",
    method: "GET",
  });
};

interface HomeNewData {
  limit: number;
}

/**
 * 新鲜好物接口返回的数据类型
 */
export interface NewItem {
  /**
   * 备注
   */
  desc: string;
  /**
   * id
   */
  id: string;
  /**
   * 商品名称
   */
  name: string;
  /**
   * 商品图片链接
   */
  picture: string;
  /**
   * 价格
   */
  price: number;
}

/**
 * 获取新鲜好物列表数据
 * @param data.limit 默认值为 4，指定响应数据中商品的数量
 * @returns promise
 */
export const getHomeNew = (data: HomeNewData) => {
  return http<NewItem[]>({
    url: "/home/new",
    method: "GET",
    data,
  });
};

/**
 * 首页-猜你喜欢-请求参数
 */
interface HomeGoodsGuessLikeData {
  page?: number;
  pageSize?: number;
}

/**
 * 首页-猜你喜欢-返回数据
 */
export interface HomeGoodsGuessLikeResult {
  /**
   * 总条数
   */
  counts: number;
  /**
   * 当前页数据
   */
  items: GuessItem[];
  /**
   * 当前页数
   */
  page: number;
  /**
   * 总页数
   */
  pages: number;
  /**
   * 每页条数
   */
  pageSize: number;
}

export interface GuessItem {
  /**
   * 商品描述
   */
  desc: string;
  /**
   * 商品折扣
   */
  discount: number;
  /**
   * id
   */
  id: string;
  /**
   * 商品名称
   */
  name: string;
  /**
   * 商品已下单数量
   */
  orderNum: number;
  /**
   * 商品图片
   */
  picture: string;
  /**
   * 商品价格
   */
  price: number;
}

/**
 * 获取猜你喜欢列表数据
 * @param data.page
 * @param data.pageSize
 * @returns promise
 */
export const getHomeGoodsGuessLike = (data: HomeGoodsGuessLikeData) => {
  return http<HomeGoodsGuessLikeResult>({
    url: "/home/goods/guessLike",
    method: "GET",
    data,
  });
};

/**
 * 推荐通用 请求参数
 */
interface RecommendData {
  /**
   * 说明：分页页码
   */
  page?: number;
  /**
   * 说明：分页数据每页条数
   */
  pageSize?: number;
  /**
   * 说明：Tab 项的 id，默认查询全部 Tab 项的第 1 页数据
   */
  subType?: string;
}
/**
 * 推荐通用 响应结果
 */
export interface RecommendResult {
  /**
   * 活动图片
   */
  bannerPicture: string;
  /**
   * id信息
   */
  id: string;
  /**
   * 子类选项集合
   */
  subTypes: SubTypeItem[];
  /**
   * 活动标题
   */
  title: string;
}

/**
 * 子类选项
 */
export interface SubTypeItem {
  goodsItems: GoodsItems;
  /**
   * 子类选项id
   */
  id: string;
  /**
   * 子类选项名称
   */
  title: string;
}

export interface GoodsItems {
  /**
   * 总数量
   */
  counts: string;
  /**
   * 商品集合
   */
  items: Item[];
  /**
   * 页码
   */
  page: string;
  /**
   * 总页数
   */
  pages: string;
  /**
   * 页容量
   */
  pageSize: string;
}

/**
 * 商品项
 */
export interface Item {
  /**
   * 商品描述
   */
  desc: string;
  /**
   * 商品id
   */
  id: string;
  /**
   * 商品名称
   */
  name: string;
  /**
   * 商品图片
   */
  picture: string;
  /**
   * 商品价格
   */
  price: number;
}

// /**
//  * 特惠推荐
//  * @param data 推荐请求参数
//  */
// export const getHotPreference = (data: RecommendData) => {
//   return http<RecommendResult>({
//     url: "/hot/preference",
//     method: "GET",
//     data,
//   });
// };

// /**
//  * 爆款推荐
//  * @param data 推荐请求参数
//  */
// export const getHotInVogue = (data: RecommendData) => {
//   return http<RecommendResult>({
//     url: "/hot/inVogue",
//     method: "GET",
//     data,
//   });
// };

/**
 * 通用推荐接口
 * @param url  什么格式的推荐
 * @param data 推荐请求参数
 */
export const getHomeRecommend = (url: string, data: RecommendData) => {
  return http<RecommendResult>({
    url,
    method: "GET",
    data,
  });
};
